﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WindowsGame1.gamePlugins.renderer;

namespace Cookie_Hero.physics
{
    public class PhysicsOperation
    {
        public static PhysicsObject getObjectById(List<PhysicsObject> objects, int id)
        {
            // TODO
            foreach(PhysicsObject physicsobj in objects)
            {
                if (physicsobj.id == id)
                {
                    return physicsobj;
                }
            }
            return null;
        }

        // controleert of een object zichtbaar kan zijn
        public static bool isVisual(PhysicsObject obj)
        {
            return obj != null && obj.visible == true && obj.aniTexture != 0;
        }

        // WERKT NOG NIET, objecten met hoogste diepte worden niet teruggegeven!
        public static List<PhysicsObject> sortObjectsByDepth(List<PhysicsObject> objects)
        {
            for (int i = 0; i < objects.Count; i++)
            {
                Console.Write(objects[i].layerDepth+":");
            }

            List<PhysicsObject> sortedObjects = new List<PhysicsObject>();
            int[] depths = new int[objects.Count];
            int highestDepth = 0;

            // haalt alle dieptes uit de objecten en stopt die in de array
            for (int i = 0; i < objects.Count; i++)
            {
                int objectDepth = objects[i].layerDepth;
                depths[i] = objectDepth;
                if (objectDepth > highestDepth)
                {
                    highestDepth = objectDepth;
                }
            }

            for (int j = 0; j < highestDepth; j++)
            {
                for (int i = 0; i < depths.Length; i++)
                {
                    if (depths[i] < j)
                    {
                        sortedObjects.Add(objects[i]);
                    }
                }
            }

            Console.WriteLine("\nNa sorteren:");
            for (int i = 0; i < objects.Count; i++)
            {
                Console.Write(objects[i].layerDepth + ":");
            }

            return sortedObjects;
        }
    }
}
